using System.Data;

namespace DataGridView3获取选中单元格行列索引及行头列头
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //填充单元格
            DataTable dt = new DataTable();// 创建 DataTable 变量
            dt.Columns.Add("列/层");//添加表头
            dt.Columns.Add("层1");
            dt.Columns.Add("层2");
            dt.Columns.Add("层3");
            dt.Columns.Add("层4");
            dt.Rows.Add("列1", true, true, true, true);//添加行内容
            dt.Rows.Add("列2", true, true, true, true);
            dt.Rows.Add("列3", true, true, true, true);
            dataGridView1.DataSource = dt;//绑定数据源
            dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
        }

        private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {

            //方法一：
            //获取当前选中单元格所在的列序号
            int columnindex = dataGridView1.CurrentRow.Cells.IndexOf(dataGridView1.CurrentCell);
            //获取获取当前选中单元格所在的行序号
            int rowindex = dataGridView1.CurrentRow.Index;

            MessageBox.Show("columnindex1：" + columnindex.ToString());
            MessageBox.Show("rowindex1：" + rowindex.ToString());



            //方法二：
            // 获取选中的单元格
            DataGridViewCell currentCell2 = dataGridView1.CurrentCell;
            // 获取选中单元格的行索引
            int rowindex2 = currentCell2.RowIndex;
            // 获取选中单元格的列索引
            int columnindex2 = currentCell2.ColumnIndex;

            MessageBox.Show("columnindex2：" + columnindex2.ToString());
            MessageBox.Show("rowindex2：" + rowindex2.ToString());


            /*---------------获取行头文本、获取列头文本------------------------------------*/
            /*
             // 获取行头文本，首先检查是否为null
    string rowHeader = dataGridView1.Rows[rowIndex].HeaderCell.Value as string ?? "行头无文本";

             // 获取列头文本，首先检查是否为null
    string columnHeader = dataGridView1.Columns[columnIndex].HeaderText ?? "列头无文本";
            */


            /*---------------获取所在行第一列文本------------------------------------*/

            // string rowHeader = dataGridView1.Rows[rowindex].Cells[0].Value as string ?? "行头无文本";
            //dataGridView1.Rows[rowindex].Cells[0].Value //第一列文本





            // 获取行头文本，首先检查是否为null
            string rowHeader = dataGridView1.Rows[rowindex].Cells[0].Value as string ?? "行头无文本";
            string columnHeader = dataGridView1.Columns[columnindex].HeaderText ?? "列头无文本";

            // 输出行头和列头文本
            MessageBox.Show("行头文本: " + rowHeader);
            MessageBox.Show("列头文本: " + columnHeader);
            // 获取列头文本，首先检查是否为null





        }

       
    }
}
